from case.lnitial.first_use import FirstUseTest
from case.lnitial.lnitial_page import LnitialTest
from case.lnitial.systemsetting_boxes_mode import SystemBoxesTest
from case.lnitial.user_use import UseTest
from common.unit import AndroidUI
from case.login.login import Login
from case.recover.recover_unfix_box_mode import RecoverUnfixBoxmodeTest
from case.storage.storage_page_boxmode import StorageBoxTest
from case.storage.packing_unboxes import PackingUnboxedTest
from case.storage.unboxed_list import UnboxedTest
from case.checkout.checkout import CheckoutTest
import time


# 科室装箱，不开固定箱码，出码分离，展厅医院
class RunUnfixedBoxMode:
    def __init__(self):
        self.driver = AndroidUI.get_webdriver()
        self.sys = SystemBoxesTest()
        self.firstuse = FirstUseTest()
        self.useruse = UseTest()
        self.ln = LnitialTest()
        self.lo = Login()
        self.re = RecoverUnfixBoxmodeTest()
        self.pack = PackingUnboxedTest()

    def begin_time(self):
        now_time = time.strftime('%Y-%m-%d %H:%M:%S')
        print(f"测试开始时间{now_time}")

    # 初始页面三模块点击操作
    # def test_lnitial(self):
    #
    # AndroidUI().write_result("三模块点击测试", "测试中-------------------------------------------------")
    # print("----------------------------------------------------------初始页点击测试开始-----------------------------------------------------------------------------------")
    # self.ln.start_unfixed_box_test()
    # print('----------------------------------------------------------初始页面点击测试结束-----------------------------------------------------------------------------------')
    # AndroidUI().write_result("三模块点击测试", "测试结束-------------------------------------------------")
    #
    # AndroidUI().write_result("系统设置测试", "测试中-------------------------------------------------")

    # 选择展厅医院
    def test_choice_hospital(self):
        AndroidUI().write_result("-----------------------选择展厅医院------------------------", "测试开始-------------------------------------------------")
        print(
            '--------------------------------------------------------------选择展厅医院中----------------------------------------------------------------------------------------')
        self.firstuse.start_test('展厅', '展厅医院')
        print(
            '--------------------------------------------------------------医院选择结束-------------------------------------------------------------------------------------')
        AndroidUI().write_result("------------------------选择展厅医院-------------------------", "测试结束-------------------------------------------------")

    # 选择浙江服务器，出码分离，科室装箱，固定箱码不打开
    def test_system_unfixed(self):
        AndroidUI().write_result("------------------------系统设置测试---------------------", "测试开始-------------------------------------------------")
        print(
            '---------------------------------------------开始选择浙江服务器，出码分离，科室装袋，固定箱码关闭-----------------------------------------------------')
        self.sys.start_unfixed_box_test()
        print(
            '--------------------------------------------结束选择浙江服务器，出码分离，科室装袋，固定箱码关闭-----------------------------------------------------')
        AndroidUI().write_result("------------------------系统设置测试--------------------------", "测试结束-------------------------------------------------")

    # 首次使用操作
    def test_first_use(self):
        AndroidUI().write_result("--------------------------首次使用------------------------------", "测试中-------------------------------------------------")
        print(
            '-------------------------------------------------------------首次使用测试开始------------------------------------------------------------------------------------')
        self.useruse.start_test()
        print(
            '-------------------------------------------------------------首次使用测试结束-----------------------------------------------')
        AndroidUI().write_result("---------------------------首次使用---------------------------------", "测试结束-------------------------------------------------")

    # 使用不同二维码登录
    def test_scan_login(self):
        AndroidUI().write_result("-------------------------不同二维码登录------------------------------", "测试中-------------------------------------------------")
        print(
            '-------------------------------------------------------------不同二维码登录测试开始------------------------------------------------------------------------------------')
        self.lo.start_test()
        print(
            '-------------------------------------------------------------不同二维码登录测试结束-----------------------------------------------')
        AndroidUI().write_result("-------------------------不同二维码登录-------------------------------", "测试结束-------------------------------------------------")

    # 回收界面主流程
    def test_recove(self, zero, keshi):
        AndroidUI().write_result("-------------回收界面的重启蓝牙，置零，输入重量，科室和护士认证，选择不同类型的垃圾进行打印，对可回收和自定义垃圾打印", "测试中-------------------------------------------------")
        print(
            '-------------------------------------------------------------回收界面测试开始------------------------------------------------------------------------------------')
        # 0.5为当未连接蓝牙秤的视乎输入的重量，如果输入“不置零”，贼不仅置零操作;演示医院为手动输入的科室，
        self.re.start_test(zero, keshi)
        print(
            '-------------------------------------------------------------回收界面测试结束-----------------------------------------------')
        AndroidUI().write_result("---------------回收界面的重启蓝牙，置零，输入重量，科室和护士认证，选择不同类型的垃圾进行打印，对可回收和自定义垃圾打印", "测试结束-------------------------------------------------")

    # 入库界面主流程
    def test_storage(self):
        AndroidUI().write_result("---------------------回收界面的扫码操作-------------------", "测试中-------------------------------------------------")
        print(
            '-------------------------------------------------------------回收界面的扫码操作测试开始------------------------------------------------------------------------------------')
        StorageBoxTest().start_test()
        print(
            '-------------------------------------------------------------回收界面的扫码操作测试结束-----------------------------------------------')
        AndroidUI().write_result("--------------------回收界面的扫码操作----------------------", "测试结束-------------------------------------------------")

    # 装箱界面主流程,括号是从0开始，左闭右开
    def test_packing(self, begin, end):
        AndroidUI().write_result("---------------------------------------装箱界面装箱操作", "测试中-------------------------------------------------")
        print(
            '-------------------------------------------------------------装箱界面测试开始------------------------------------------------------------------------------------')
        self.pack.start_test(begin, end)
        print(
            '-------------------------------------------------------------装箱界面测试结束-----------------------------------------------')
        AndroidUI().write_result("---------------------------------------装箱界面装箱操作", "测试结束-------------------------------------------------")

    # 未装箱列表操作
    def test_unboxed(self):
        AndroidUI().write_result("---------------------------------------未装箱界面装箱操作", "测试中-------------------------------------------------")
        print(
            '-------------------------------------------------------------未装箱界面测试开始------------------------------------------------------------------------------------')
        UnboxedTest().start_test()
        print(
            '-------------------------------------------------------------未装箱界面测试结束-----------------------------------------------')
        AndroidUI().write_result("---------------------------------------未装箱界面装箱操作", "测试结束-------------------------------------------------")

    # 出库界面操作
    def test_checkout(self):
        AndroidUI().write_result("---------------------------------------出库界面装箱操作", "测试中-------------------------------------------------")
        print(
            '-------------------------------------------------------------出库界面测试开始------------------------------------------------------------------------------------')
        CheckoutTest().start_test()
        print(
            '-------------------------------------------------------------出库界面测试结束-----------------------------------------------')
        AndroidUI().write_result("---------------------------------------出库界面装箱操作", "测试结束-------------------------------------------------")

    def test_end_time(self):
        now_time = time.strftime('%Y-%m-%d %H:%M:%S')
        print(f"测试结束时间{now_time}")

    def back_button(self):
        self.driver.keyevent(4)

    def run_test(self):
        AndroidUI().write_result("--------------------------------科室装袋关闭固定箱码测试开始-------------------------", "---开始---")
        self.begin_time()
        print('========================================================科室装箱，关闭固定箱码测试开始==============================================================')
        # self.test_choice_hospital()
        # self.test_first_use()         #合起来测得时候注释掉，可以把固定箱码出库
        self.test_system_unfixed()      #选择固定箱码
        # self.test_scan_login()
        self.test_recove('5.5', '自动化测试科室')  # zero输入的是"不置零"或者输入的具体的重量,总共有15袋
        self.test_storage()
        self.test_checkout()
        self.back_button()
        self.back_button()

        self.test_end_time()
        print('========================================================科室装箱，关闭固定箱码测试结束===============================================================')
        AndroidUI().write_result("-----------------------------------科室装袋关闭固定箱码测试开始---------------", "---结束---")



if __name__ == '__main__':
    r = RunUnfixedBoxMode()
    r.run_test()
    # for i in range(10):
    #     print(i)
    #     r.run_test()
